
#ifndef _CONNECTION_H_
#define _CONNECTION_H_


#include "../../engine.h"

#include "../../User.h"


namespace ProjectZ { namespace NCommand { namespace NConnection {


class CS_CONNECT
{
public:
	static void OnExecute( User * pUser, ::Network::Packet *pPacket );
};

class CS_RECONNECT
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_REQ_LOGIN
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
private:
	static bool loginQuery(User * pUser, const char * nickname, const char * profile_url, const char * uuid, int & isBlock);
	static void sendAck(User * pUser, int result);
};

class CS_REQ_LOGOUT
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_REQ_SERVER_ADDR
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_REQ_SERVER_LIST
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_REQ_CHANNEL_LIST
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_DUP_LOGIN
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_EXCEPTION_MESSAGE
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

class CS_CPI_REQUEST
{
public:
	static void OnExecute(User * pUser, ::Network::Packet * pPacket);
};

} /*NConnection*/ } /*NCommand*/ } /*ProjectZ*/


#endif /* _CONNECTION_H_ */
